@@ -625,6 +625,51 @@ def statistic_consumer(request):  | 
            ||
| 625 | 625 | 
                'province_logs': province_logs,  | 
            
| 626 | 626 | 
                })  | 
            
| 627 | 627 | 
                 | 
            
| 628 | 
                +def statistic_member(request):  | 
            |
| 629 | 
                +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            |
| 630 | 
                +    admin_id = request.POST.get('admin_id', '')
               | 
            |
| 631 | 
                +    start_time = request.POST.get('start_time', '')
               | 
            |
| 632 | 
                +    end_time = request.POST.get('end_time', '')
               | 
            |
| 633 | 
                +  | 
            |
| 634 | 
                + if brand_id != settings.KODO_DEFAULT_BRAND_ID:  | 
            |
| 635 | 
                + return response(ProductBrandStatusCode.BRAND_NOT_MATCH)  | 
            |
| 636 | 
                +  | 
            |
| 637 | 
                + try:  | 
            |
| 638 | 
                + administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)  | 
            |
| 639 | 
                + except AdministratorInfo.DoesNotExist:  | 
            |
| 640 | 
                + return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)  | 
            |
| 641 | 
                +  | 
            |
| 642 | 
                + # 消费者统计  | 
            |
| 643 | 
                +    users = ConsumeInfoSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, test_user=False, dupload=False, status=True).values('user_id').distinct()
               | 
            |
| 644 | 
                +  | 
            |
| 645 | 
                + userinfos = UserInfo.objects.none()  | 
            |
| 646 | 
                +  | 
            |
| 647 | 
                + for user in users:  | 
            |
| 648 | 
                +        userinfos |= UserInfo.objects.filter(user_id=user.get('user_id', ''))
               | 
            |
| 649 | 
                +  | 
            |
| 650 | 
                + # 会员级别  | 
            |
| 651 | 
                +    level_logs = list(userinfos.values('level').annotate(num=Count('user_id')))
               | 
            |
| 652 | 
                +  | 
            |
| 653 | 
                + # 会员积分  | 
            |
| 654 | 
                +    integral_logs = list(userinfos.values('integral').annotate(num=Count('user_id')))
               | 
            |
| 655 | 
                +  | 
            |
| 656 | 
                + # 镜头数  | 
            |
| 657 | 
                +    shot_logs = list(userinfos.values('shots_num').annotate(num=Count('user_id')))
               | 
            |
| 658 | 
                +  | 
            |
| 659 | 
                + # 性别  | 
            |
| 660 | 
                +    sex_logs = list(userinfos.values('sex').annotate(num=Count('user_id')))
               | 
            |
| 661 | 
                +  | 
            |
| 662 | 
                + # 省份  | 
            |
| 663 | 
                +    province_logs = list(userinfos.values('province_name').annotate(num=Count('user_id')).order_by('-num'))
               | 
            |
| 664 | 
                +  | 
            |
| 665 | 
                +    return response(200, 'Get Consumer Statistic Success', u'获取消费者统计成功', data={
               | 
            |
| 666 | 
                + 'level_logs': level_logs,  | 
            |
| 667 | 
                + 'integral_logs': integral_logs,  | 
            |
| 668 | 
                + 'shot_logs': shot_logs,  | 
            |
| 669 | 
                + 'sex_logs': sex_logs,  | 
            |
| 670 | 
                + 'province_logs': province_logs,  | 
            |
| 671 | 
                + })  | 
            |
| 672 | 
                +  | 
            |
| 628 | 673 | 
                def record_consumer(request):  | 
            
| 629 | 674 | 
                     brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            
| 630 | 675 | 
                     page = request.POST.get('page', 1)
               | 
            
                @@ -314,6 +314,7 @@ urlpatterns += [  | 
            ||
| 314 | 314 | 
                 | 
            
| 315 | 315 | 
                url(r'^admin/dashboard$', admin_views.dashboard, name='dashboard'),  | 
            
| 316 | 316 | 
                url(r'^admin/statistic/consumer$', admin_views.statistic_consumer, name='statistic_consumer'),  | 
            
| 317 | 
                + url(r'^admin/statistic/member$', admin_views.statistic_member, name='statistic_member'),  | 
            |
| 317 | 318 | 
                 | 
            
| 318 | 319 | 
                url(r'^admin/record/consumer$', admin_views.record_consumer, name='record_consumer'),  | 
            
| 319 | 320 | 
                url(r'^admin/record/sale$', admin_views.record_sale, name='record_sale'),  |